package cn.lingyangwl.agile.tenant.core;

import java.lang.annotation.*;

/**
 * 数据隔离注解
 * 
 * @author shenguangyang
 */
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataIsolation {
    /**
     * 过滤租户
     */
    boolean filterTenant() default false;

    /**
     * 是否过滤主租户字段, 如果有的话, 根据业务场景可能会在主租户下管理子租户数据, 这样的话
     * 在主租户中过滤数据会用到 main_tenant_id 字段, 子租户过滤数据只会用到tenant_id
     */
    boolean filterMainTenant() default false;

    /**
     * 是否根据用户进行过滤, 如果为false表明当前, 表中没有和某个用户发生关联, 即不做任何处理, 关联的用户字段名目前仅支持 user_id
     */
    boolean filterUser() default false;

    /**
     * 当
     * @return 用户被删除的时候是否删除用户数据
     */
    boolean deleteUserData() default false;

    /**
     * 表名
     */
    String tableName();
}
